package com.tools.Fisco;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.fisco.bcos.sdk.abi.FunctionReturnDecoder;
import org.fisco.bcos.sdk.abi.TypeReference;
import org.fisco.bcos.sdk.abi.datatypes.DynamicArray;
import org.fisco.bcos.sdk.abi.datatypes.DynamicStruct;
import org.fisco.bcos.sdk.abi.datatypes.Event;
import org.fisco.bcos.sdk.abi.datatypes.Function;
import org.fisco.bcos.sdk.abi.datatypes.Type;
import org.fisco.bcos.sdk.abi.datatypes.Utf8String;
import org.fisco.bcos.sdk.abi.datatypes.generated.Int256;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple2;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple3;
import org.fisco.bcos.sdk.client.Client;
import org.fisco.bcos.sdk.contract.Contract;
import org.fisco.bcos.sdk.crypto.CryptoSuite;
import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.eventsub.EventCallback;
import org.fisco.bcos.sdk.model.CryptoType;
import org.fisco.bcos.sdk.model.TransactionReceipt;
import org.fisco.bcos.sdk.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.transaction.model.exception.ContractException;

@SuppressWarnings("unchecked")
public class EquityStructureTable extends Contract {
    public static final String[] BINARY_ARRAY = {"60806040526040805190810160405280601681526020017f636f6d70616e795f676f65735f7461626c655f636f6d00000000000000000000815250600190805190602001906200005192919062000178565b503480156200005f57600080fd5b506110016000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356004b6a60016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200011b9190620003b1565b602060405180830381600087803b1580156200013657600080fd5b505af11580156200014b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200017191908101906200023d565b506200041b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001bb57805160ff1916838001178555620001ec565b82800160010185558215620001ec579182015b82811115620001eb578251825591602001919060010190620001ce565b5b509050620001fb9190620001ff565b5090565b6200022491905b808211156200022057600081600090555060010162000206565b5090565b90565b600062000235825162000411565b905092915050565b6000602082840312156200025057600080fd5b6000620002608482850162000227565b91505092915050565b600081546001811660008114620002895760018114620002aa57620002ef565b607f600283041680865260ff198316602087015260408601935050620002ef565b60028204808652602086019550620002c285620003ff565b60005b82811015620002e657815481890152600182019150602081019050620002c5565b80880195505050505b505092915050565b6000601382527f5368617265686f6c6465725f6163636f756e74000000000000000000000000006020830152604082019050919050565b6000605482527f556e69666965645f736f6369616c5f6372656469745f636f64652c636f6d706160208301527f6e795f4e616d652c5368617265686f6c6465722c5368617265686f6c6465725f60408301527f6e756d6265722c6f66666572696e675f747970650000000000000000000000006060830152608082019050919050565b60006060820190508181036000830152620003cd818462000269565b90508181036020830152620003e281620002f7565b90508181036040830152620003f7816200032e565b905092915050565b60008160005260206000209050919050565b6000819050919050565b613603806200042b6000396000f300608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063405fb9301461007d57806342c55cba146100ba57806345698fe3146100f75780639241e61c146101355780639eeb59a014610173578063d7bb3d1c146101b0575b600080fd5b34801561008957600080fd5b506100a4600480360361009f9190810190612bd7565b6101db565b6040516100b1919061305b565b60405180910390f35b3480156100c657600080fd5b506100e160048036036100dc9190810190612aec565b61077d565b6040516100ee91906133e2565b60405180910390f35b34801561010357600080fd5b5061011e60048036036101199190810190612b58565b610f98565b60405161012c929190613076565b60405180910390f35b34801561014157600080fd5b5061015c60048036036101579190810190612b58565b61147c565b60405161016a929190613076565b60405180910390f35b34801561017f57600080fd5b5061019a60048036036101959190810190612a85565b611901565b6040516101a79190613039565b60405180910390f35b3480156101bc57600080fd5b506101c56122a9565b6040516101d2919061309f565b60405180910390f35b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c960016040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610258919061315f565b602060405180830381600087803b15801561027257600080fd5b505af1158015610286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102aa91908101906129f2565b92508273ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561031057600080fd5b505af1158015610324573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061034891908101906129c9565b91508173ffffffffffffffffffffffffffffffffffffffff1663e942b51686600001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016103a391906133ad565b600060405180830381600087803b1580156103bd57600080fd5b505af11580156103d1573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b51686602001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161042e9190613280565b600060405180830381600087803b15801561044857600080fd5b505af115801561045c573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b51686604001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104b99190613358565b600060405180830381600087803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba748660a001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610544919061330a565b600060405180830381600087803b15801561055e57600080fd5b505af1158015610572573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b51686606001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105cf91906131f6565b600060405180830381600087803b1580156105e957600080fd5b505af11580156105fd573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b51686608001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161065a91906131a1565b600060405180830381600087803b15801561067457600080fd5b505af1158015610688573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff166331afac368660600151846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016106e792919061312f565b602060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107399190810190612a1b565b90507fc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce8160405161076a919061305b565b60405180910390a1809350505050919050565b61078561267b565b600080600061079261267b565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c960016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161080c919061315f565b602060405180830381600087803b15801561082657600080fd5b505af115801561083a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061085e91908101906129f2565b95508573ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156108c457600080fd5b505af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108fc9190810190612977565b94508473ffffffffffffffffffffffffffffffffffffffff1663cd30a1d18a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610953919061322b565b600060405180830381600087803b15801561096d57600080fd5b505af1158015610981573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663cd30a1d1896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016109da91906132b5565b600060405180830381600087803b1580156109f457600080fd5b505af1158015610a08573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff1663e8434e398a876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610a639291906130c1565b602060405180830381600087803b158015610a7d57600080fd5b505af1158015610a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ab591908101906129a0565b9350600091505b8373ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610b2057600080fd5b505af1158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b589190810190612a1b565b821215610f89578373ffffffffffffffffffffffffffffffffffffffff1663846719e0836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610bb4919061305b565b602060405180830381600087803b158015610bce57600080fd5b505af1158015","610be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c0691908101906129c9565b90508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610c5b9061338d565b600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610cb29190810190612a44565b83600001819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610d0d90613260565b600060405180830381600087803b158015610d2757600080fd5b505af1158015610d3b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610d649190810190612a44565b83602001819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610dbf90613338565b600060405180830381600087803b158015610dd957600080fd5b505af1158015610ded573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610e169190810190612a44565b83604001819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610e71906131d6565b600060405180830381600087803b158015610e8b57600080fd5b505af1158015610e9f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610ec89190810190612a44565b83606001819052508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610f23906132ea565b602060405180830381600087803b158015610f3d57600080fd5b505af1158015610f51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f759190810190612a1b565b8360a0018181525050816001019150610abc565b82965050505050505092915050565b600080610fa361267b565b6000806000806000610fb58b8b61077d565b9550888660a001510194506000851415610fe457610fd38b8b612347565b93508360008090509750975061146e565b600085121561101e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808191508090509750975061146e565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c960016040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611095919061315f565b602060405180830381600087803b1580156110af57600080fd5b505af11580156110c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110e791908101906129f2565b92508273ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561114d57600080fd5b505af1158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111859190810190612977565b91508173ffffffffffffffffffffffffffffffffffffffff1663cd30a1d18c6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016111dc919061322b565b600060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663cd30a1d18b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161126391906132b5565b600060405180830381600087803b15801561127d57600080fd5b505af1158015611291573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156112f957600080fd5b505af115801561130d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061133191908101906129c9565b90508073ffffffffffffffffffffffffffffffffffffffff16632ef8ba74866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611388919061330a565b600060405180830381600087803b1580156113a257600080fd5b505af11580156113b6573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663bf2b70a18c83856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611413939291906130f1565b602060405180830381600087803b15801561142d57600080fd5b505af1158015611441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114659190810190612a1b565b93508385975097505b505050505050935093915050565b60008061148761267b565b60008060008060006114998b8b61077d565b9550888660a001510194506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c960016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161151b919061315f565b602060405180830381600087803b15801561153557600080fd5b505af1158015611549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061156d91908101906129f2565b93508373ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156115d357600080fd5b505af11580156115e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061160b9190810190612977565b92508273ffffffffffffffffffffffffffffffffffffffff1663cd30a1d18c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611662919061322b565b600060405180830381600087803b15801561167c57600080fd5b505af1158015611690573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663cd30a1d18b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016116e991906132b5565b600060405180830381600087803b15801561170357600080fd5b505af1158015611717573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561177f57600080fd5b505af1158015611793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117b791908101906129c9565b91508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba74866040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161180e919061330a565b600060405180830381600087803b15801561182857600080fd5b505af115801561183c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663bf2b70a18c84866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611899939291906130f1565b602060405180830381600087803b1580156118b357600080fd5b505af11580156118c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118eb9190810190612a1b565b9050808597509750505050505050935093915050565b606060008060008060606000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c960016040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611985919061315f565b602060405180830381600087803b15801561199f57600080fd5b505af11580156119b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119d791908101906129f2565b96508673ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611a3d57600080fd5b505af1158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a759190810190612977565b95508573ffffffffffffffffffffffffffffffffffffffff1663cd30a1d18c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611acc919061322b565b600060405180830381600087803b158015611ae657600080fd5b505af1158015611afa573d6000803e3d6000fd5b5050505060008a14158015611b10575060008914155b15611b9f578573ffffffffffffffffffffffffffffffffffffffff16637ec1cc658b8b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611b6c929190613076565b600060405180830381600087803b158015611b8657600080fd5b505af1158015611b9a573d6000803e3d6000fd5b505050505b8673ffffffffffffffffffffffffffffffffffffffff1663e8434e398c886040518363ffffffff167c010000000000000000000000","0000000000000000000000000000000000028152600401611bf69291906130c1565b602060405180830381600087803b158015611c1057600080fd5b505af1158015611c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c4891908101906129a0565b94508473ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611cae57600080fd5b505af1158015611cc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ce69190810190612a1b565b935083604051908082528060200260200182016040528015611d2257816020015b611d0f6126b2565b815260200190600190039081611d075790505b509250600091505b83821215612298578473ffffffffffffffffffffffffffffffffffffffff1663846719e0836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611d87919061305b565b602060405180830381600087803b158015611da157600080fd5b505af1158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dd991908101906129c9565b90508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611e2e9061338d565b600060405180830381600087803b158015611e4857600080fd5b505af1158015611e5c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611e859190810190612a44565b8383815181101515611e9357fe5b90602001906020020151600001819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611ef790613260565b600060405180830381600087803b158015611f1157600080fd5b505af1158015611f25573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611f4e9190810190612a44565b8383815181101515611f5c57fe5b90602001906020020151602001819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611fc090613338565b600060405180830381600087803b158015611fda57600080fd5b505af1158015611fee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506120179190810190612a44565b838381518110151561202557fe5b90602001906020020151604001819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612089906131d6565b600060405180830381600087803b1580156120a357600080fd5b505af11580156120b7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506120e09190810190612a44565b83838151811015156120ee57fe5b90602001906020020151606001819052508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612152906132ea565b602060405180830381600087803b15801561216c57600080fd5b505af1158015612180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121a49190810190612a1b565b83838151811015156121b257fe5b9060200190602002015160a00181815250508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161221790613181565b600060405180830381600087803b15801561223157600080fd5b505af1158015612245573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061226e9190810190612a44565b838381518110151561227c57fe5b9060200190602002015160800181905250816001019150611d2a565b829750505050505050509392505050565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561233f5780601f106123145761010080835404028352916020019161233f565b820191906000526020600020905b81548152906001019060200180831161232257829003601f168201915b505050505081565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c960016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016123c4919061315f565b602060405180830381600087803b1580156123de57600080fd5b505af11580156123f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061241691908101906129f2565b92508273ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561247c57600080fd5b505af1158015612490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124b49190810190612977565b91508173ffffffffffffffffffffffffffffffffffffffff1663cd30a1d1876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161250b919061322b565b600060405180830381600087803b15801561252557600080fd5b505af1158015612539573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663cd30a1d1866040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161259291906132b5565b600060405180830381600087803b1580156125ac57600080fd5b505af11580156125c0573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff166328bb211787846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161261b9291906130c1565b602060405180830381600087803b15801561263557600080fd5b505af1158015612649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061266d9190810190612a1b565b905080935050505092915050565b60c0604051908101604052806060815260200160608152602001606081526020016060815260200160608152602001600081525090565b60c0604051908101604052806060815260200160608152602001606081526020016060815260200160608152602001600081525090565b60006126f58251613500565b905092915050565b60006127098251613512565b905092915050565b600061271d8251613524565b905092915050565b60006127318251613536565b905092915050565b60006127458235613548565b905092915050565b60006127598251613548565b905092915050565b600082601f830112151561277457600080fd5b813561278761278282613431565b613404565b915080825260208301602083018583830111156127a357600080fd5b6127ae838284613576565b50505092915050565b600082601f83011215156127ca57600080fd5b81356127dd6127d88261345d565b613404565b915080825260208301602083018583830111156127f957600080fd5b612804838284613576565b50505092915050565b600082601f830112151561282057600080fd5b815161283361282e8261345d565b613404565b9150808252602083016020830185838301111561284f57600080fd5b61285a838284613585565b50505092915050565b600060c0828403121561287557600080fd5b61287f60c0613404565b9050600082013567ffffffffffffffff81111561289b57600080fd5b6128a784828501612761565b600083015250602082013567ffffffffffffffff8111156128c757600080fd5b6128d384828501612761565b602083015250604082013567ffffffffffffffff8111156128f357600080fd5b6128ff84828501612761565b604083015250606082013567ffffffffffffffff81111561291f57600080fd5b61292b84828501612761565b606083015250608082013567ffffffffffffffff81111561294b57600080fd5b61295784828501612761565b60808301525060a061296b84828501612739565b60a08301525092915050565b60006020828403121561298957600080fd5b6000612997848285016126e9565b91505092915050565b6000602082840312156129b257600080fd5b60006129c0848285016126fd565b91505092915050565b6000602082840312156129db57600080fd5b60006129e984828501612711565b91505092915050565b600060208284031215612a0457600080fd5b6000612a1284828501612725565b91505092915050565b600060208284031215612a2d57600080fd5b6000612a3b8482850161274d565b91505092915050565b600060208284031215612a5657600080fd5b600082015167ffffffffffffffff811115612a7057600080fd5b612a7c8482850161280d565b91505092915050565b600080600060608486031215612a9a57600080fd5b600084013567ffffffffffffffff811115612ab457600080fd5b612ac0868287016127b7565b9350506020612ad186828701612739565b9250506040612ae286828701612739565b9150509250925092565b60008060408385031215612aff57600080fd5b600083013567ffffffffffffffff811115612b1957600080fd5b612b25858286016127b7565b925050602083013567ffffffffffffffff811115612b4257600080fd5b612b4e858286016127b7565b9150509250929050565b600080600060608486031215612b6d57600080fd5b600084013567ffffffffffffffff811115612b8757600080fd5b612b93868287016127b7565b935050602084013567ffffffffffffffff811115612bb057600080fd5b612bbc868287016127b7565b9250506040612bcd86828701612739565b91505092509250","92565b600060208284031215612be957600080fd5b600082013567ffffffffffffffff811115612c0357600080fd5b612c0f84828501612863565b91505092915050565b6000612c23826134a8565b80845260208401935083602082028501612c3c85613489565b60005b84811015612c75578383038852612c57838351612f94565b9250612c62826134c9565b9150602088019750600181019050612c3f565b508196508694505050505092915050565b612c8f81613552565b82525050565b612c9e81613564565b82525050565b612cad816134f6565b82525050565b6000612cbe826134be565b808452612cd2816020860160208601613585565b612cdb816135b8565b602085010191505092915050565b6000612cf4826134b3565b808452612d08816020860160208601613585565b612d11816135b8565b602085010191505092915050565b600081546001811660008114612d3c5760018114612d5c57612d9d565b607f600283041680865260ff198316602087015260408601935050612d9d565b60028204808652602086019550612d7285613496565b60005b82811015612d9457815481890152600182019150602081019050612d75565b80880195505050505b505092915050565b6000600d82527f6f66666572696e675f74797065000000000000000000000000000000000000006020830152604082019050919050565b6000601382527f5368617265686f6c6465725f6163636f756e74000000000000000000000000006020830152604082019050919050565b6000600c82527f636f6d70616e795f4e616d6500000000000000000000000000000000000000006020830152604082019050919050565b6000601282527f5368617265686f6c6465725f6e756d62657200000000000000000000000000006020830152604082019050919050565b6000600b82527f5368617265686f6c6465720000000000000000000000000000000000000000006020830152604082019050919050565b6000601a82527f556e69666965645f736f6369616c5f6372656469745f636f64650000000000006020830152604082019050919050565b600060c0830160008301518482036000860152612f0c8282612ce9565b91505060208301518482036020860152612f268282612ce9565b91505060408301518482036040860152612f408282612ce9565b91505060608301518482036060860152612f5a8282612ce9565b91505060808301518482036080860152612f748282612ce9565b91505060a0830151612f8960a0860182612ca4565b508091505092915050565b600060c0830160008301518482036000860152612fb18282612ce9565b91505060208301518482036020860152612fcb8282612ce9565b91505060408301518482036040860152612fe58282612ce9565b91505060608301518482036060860152612fff8282612ce9565b915050608083015184820360808601526130198282612ce9565b91505060a083015161302e60a0860182612ca4565b508091505092915050565b600060208201905081810360008301526130538184612c18565b905092915050565b60006020820190506130706000830184612ca4565b92915050565b600060408201905061308b6000830185612ca4565b6130986020830184612ca4565b9392505050565b600060208201905081810360008301526130b98184612ce9565b905092915050565b600060408201905081810360008301526130db8185612cb3565b90506130ea6020830184612c86565b9392505050565b6000606082019050818103600083015261310b8186612cb3565b905061311a6020830185612c95565b6131276040830184612c86565b949350505050565b600060408201905081810360008301526131498185612ce9565b90506131586020830184612c95565b9392505050565b600060208201905081810360008301526131798184612d1f565b905092915050565b6000602082019050818103600083015261319a81612da5565b9050919050565b600060408201905081810360008301526131ba81612da5565b905081810360208301526131ce8184612ce9565b905092915050565b600060208201905081810360008301526131ef81612ddc565b9050919050565b6000604082019050818103600083015261320f81612ddc565b905081810360208301526132238184612ce9565b905092915050565b6000604082019050818103600083015261324481612ddc565b905081810360208301526132588184612cb3565b905092915050565b6000602082019050818103600083015261327981612e13565b9050919050565b6000604082019050818103600083015261329981612e13565b905081810360208301526132ad8184612ce9565b905092915050565b600060408201905081810360008301526132ce81612e13565b905081810360208301526132e28184612cb3565b905092915050565b6000602082019050818103600083015261330381612e4a565b9050919050565b6000604082019050818103600083015261332381612e4a565b90506133326020830184612ca4565b92915050565b6000602082019050818103600083015261335181612e81565b9050919050565b6000604082019050818103600083015261337181612e81565b905081810360208301526133858184612ce9565b905092915050565b600060208201905081810360008301526133a681612eb8565b9050919050565b600060408201905081810360008301526133c681612eb8565b905081810360208301526133da8184612ce9565b905092915050565b600060208201905081810360008301526133fc8184612eef565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561342757600080fd5b8060405250919050565b600067ffffffffffffffff82111561344857600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561347457600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b60008160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061350b826134d6565b9050919050565b600061351d826134d6565b9050919050565b600061352f826134d6565b9050919050565b6000613541826134d6565b9050919050565b6000819050919050565b600061355d826134d6565b9050919050565b600061356f826134d6565b9050919050565b82818337600083830152505050565b60005b838110156135a3578082015181840152602081019050613588565b838111156135b2576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820c66bb0c8533db4bf4e7557efb7bd08b3168cc65ad3e384ff6f26997c33b4934b6c6578706572696d656e74616cf50037"};

    public static final String BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {"60806040526040805190810160405280601681526020017f636f6d70616e795f676f65735f7461626c655f636f6d00000000000000000000815250600190805190602001906200005192919062000178565b503480156200005f57600080fd5b506110016000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c92a780160016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200011b9190620003b1565b602060405180830381600087803b1580156200013657600080fd5b505af11580156200014b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200017191908101906200023d565b506200041b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001bb57805160ff1916838001178555620001ec565b82800160010185558215620001ec579182015b82811115620001eb578251825591602001919060010190620001ce565b5b509050620001fb9190620001ff565b5090565b6200022491905b808211156200022057600081600090555060010162000206565b5090565b90565b600062000235825162000411565b905092915050565b6000602082840312156200025057600080fd5b6000620002608482850162000227565b91505092915050565b600081546001811660008114620002895760018114620002aa57620002ef565b607f600283041680865260ff198316602087015260408601935050620002ef565b60028204808652602086019550620002c285620003ff565b60005b82811015620002e657815481890152600182019150602081019050620002c5565b80880195505050505b505092915050565b6000605482527f556e69666965645f736f6369616c5f6372656469745f636f64652c636f6d706160208301527f6e795f4e616d652c5368617265686f6c6465722c5368617265686f6c6465725f60408301527f6e756d6265722c6f66666572696e675f747970650000000000000000000000006060830152608082019050919050565b6000601382527f5368617265686f6c6465725f6163636f756e74000000000000000000000000006020830152604082019050919050565b60006060820190508181036000830152620003cd818462000269565b90508181036020830152620003e2816200037a565b90508181036040830152620003f781620002f7565b905092915050565b60008160005260206000209050919050565b6000819050919050565b613603806200042b6000396000f300608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d0186f1461007d57806328658e40146100bb5780633cea179e146100f85780635b55b5661461013657806378c0f32814610173578063895cb86f146101b0575b600080fd5b34801561008957600080fd5b506100a4600480360361009f9190810190612b58565b6101db565b6040516100b2929190613076565b60405180910390f35b3480156100c757600080fd5b506100e260048036036100dd9190810190612a85565b6106bf565b6040516100ef9190613039565b60405180910390f35b34801561010457600080fd5b5061011f600480360361011a9190810190612b58565b611067565b60405161012d929190613076565b60405180910390f35b34801561014257600080fd5b5061015d60048036036101589190810190612aec565b6114ec565b60405161016a91906133e2565b60405180910390f35b34801561017f57600080fd5b5061019a60048036036101959190810190612bd7565b611d07565b6040516101a7919061305b565b60405180910390f35b3480156101bc57600080fd5b506101c56122a9565b6040516101d2919061309f565b60405180910390f35b6000806101e661267b565b60008060008060006101f88b8b6114ec565b9550888660a001510194506000851415610227576102168b8b612347565b9350836000809050975097506106b1565b6000851215610261577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80819150809050975097506106b1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b6560016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016102d8919061315f565b602060405180830381600087803b1580156102f257600080fd5b505af1158015610306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061032a91908101906129f2565b92508273ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561039057600080fd5b505af11580156103a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103c89190810190612977565b91508173ffffffffffffffffffffffffffffffffffffffff1663ae763db58c6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161041f9190613279565b600060405180830381600087803b15801561043957600080fd5b505af115801561044d573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663ae763db58b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104a691906133ad565b600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16635887ab246040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561053c57600080fd5b505af1158015610550573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061057491908101906129c9565b90508073ffffffffffffffffffffffffffffffffffffffff1663def42698866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105cb91906131a1565b600060405180830381600087803b1580156105e557600080fd5b505af11580156105f9573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663664b37d68c83856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610656939291906130f1565b602060405180830381600087803b15801561067057600080fd5b505af1158015610684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106a89190810190612a1b565b93508385975097505b505050505050935093915050565b606060008060008060606000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b6560016040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610743919061315f565b602060405180830381600087803b15801561075d57600080fd5b505af1158015610771573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061079591908101906129f2565b96508673ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156107fb57600080fd5b505af115801561080f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108339190810190612977565b95508573ffffffffffffffffffffffffffffffffffffffff1663ae763db58c6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161088a9190613279565b600060405180830381600087803b1580156108a457600080fd5b505af11580156108b8573d6000803e3d6000fd5b5050505060008a141580156108ce575060008914155b1561095d578573ffffffffffffffffffffffffffffffffffffffff1663324927378b8b6040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161092a929190613076565b600060405180830381600087803b15801561094457600080fd5b505af1158015610958573d6000803e3d6000fd5b505050505b8673ffffffffffffffffffffffffffffffffffffffff1663d8ac59578c886040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016109b49291906130c1565b602060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a0691908101906129a0565b94508473ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610a6c57600080fd5b505af1158015610a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aa49190810190612a1b565b935083604051908082528060200260200182016040528015610ae057816020015b610acd6126b2565b815260200190600190039081610ac55790505b509250600091505b83821215611056578473ffffffffffffffffffffffffffffffffffffffff16633dd2b614836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610b45919061305b565b602060405180830381600087803b158015610b5f57600080fd5b505af1158015610b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b9791908101906129c9565b90508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000","000000000000000000028152600401610bec906131cf565b600060405180830381600087803b158015610c0657600080fd5b505af1158015610c1a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610c439190810190612a44565b8383815181101515610c5157fe5b90602001906020020151600001819052508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610cb590613358565b600060405180830381600087803b158015610ccf57600080fd5b505af1158015610ce3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610d0c9190810190612a44565b8383815181101515610d1a57fe5b90602001906020020151602001819052508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610d7e906132ae565b600060405180830381600087803b158015610d9857600080fd5b505af1158015610dac573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610dd59190810190612a44565b8383815181101515610de357fe5b90602001906020020151604001819052508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610e4790613224565b600060405180830381600087803b158015610e6157600080fd5b505af1158015610e75573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610e9e9190810190612a44565b8383815181101515610eac57fe5b90602001906020020151606001819052508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610f1090613181565b602060405180830381600087803b158015610f2a57600080fd5b505af1158015610f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f629190810190612a1b565b8383815181101515610f7057fe5b9060200190602002015160a00181815250508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610fd590613303565b600060405180830381600087803b158015610fef57600080fd5b505af1158015611003573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061102c9190810190612a44565b838381518110151561103a57fe5b9060200190602002015160800181905250816001019150610ae8565b829750505050505050509392505050565b60008061107261267b565b60008060008060006110848b8b6114ec565b9550888660a001510194506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b6560016040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611106919061315f565b602060405180830381600087803b15801561112057600080fd5b505af1158015611134573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061115891908101906129f2565b93508373ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156111be57600080fd5b505af11580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111f69190810190612977565b92508273ffffffffffffffffffffffffffffffffffffffff1663ae763db58c6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161124d9190613279565b600060405180830381600087803b15801561126757600080fd5b505af115801561127b573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663ae763db58b6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016112d491906133ad565b600060405180830381600087803b1580156112ee57600080fd5b505af1158015611302573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff16635887ab246040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113a291908101906129c9565b91508173ffffffffffffffffffffffffffffffffffffffff1663def42698866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016113f991906131a1565b600060405180830381600087803b15801561141357600080fd5b505af1158015611427573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663664b37d68c84866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611484939291906130f1565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114d69190810190612a1b565b9050808597509750505050505050935093915050565b6114f461267b565b600080600061150161267b565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b6560016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161157b919061315f565b602060405180830381600087803b15801561159557600080fd5b505af11580156115a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115cd91908101906129f2565b95508573ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561163357600080fd5b505af1158015611647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061166b9190810190612977565b94508473ffffffffffffffffffffffffffffffffffffffff1663ae763db58a6040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016116c29190613279565b600060405180830381600087803b1580156116dc57600080fd5b505af11580156116f0573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663ae763db5896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161174991906133ad565b600060405180830381600087803b15801561176357600080fd5b505af1158015611777573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff1663d8ac59578a876040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016117d29291906130c1565b602060405180830381600087803b1580156117ec57600080fd5b505af1158015611800573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061182491908101906129a0565b9350600091505b8373ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561188f57600080fd5b505af11580156118a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118c79190810190612a1b565b821215611cf8578373ffffffffffffffffffffffffffffffffffffffff16633dd2b614836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611923919061305b565b602060405180830381600087803b15801561193d57600080fd5b505af1158015611951573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061197591908101906129c9565b90508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016119ca906131cf565b600060405180830381600087803b1580156119e457600080fd5b505af11580156119f8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611a219190810190612a44565b83600001819052508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611a7c90613358565b600060405180830381600087803b158015611a9657600080fd5b505af1158015611aaa573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611ad39190810190612a44565b83602001819052508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611b2e906132ae565b600060405180830381600087803b158015611b4857600080fd5b505af1158015611b5c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611b859190810190612a44565b83604001819052508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152","600401611be090613224565b600060405180830381600087803b158015611bfa57600080fd5b505af1158015611c0e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611c379190810190612a44565b83606001819052508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611c9290613181565b602060405180830381600087803b158015611cac57600080fd5b505af1158015611cc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ce49190810190612a1b565b8360a001818152505081600101915061182b565b82965050505050505092915050565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b6560016040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611d84919061315f565b602060405180830381600087803b158015611d9e57600080fd5b505af1158015611db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dd691908101906129f2565b92508273ffffffffffffffffffffffffffffffffffffffff16635887ab246040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611e3c57600080fd5b505af1158015611e50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e7491908101906129c9565b91508173ffffffffffffffffffffffffffffffffffffffff16631a391cb486600001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611ecf91906131ef565b600060405180830381600087803b158015611ee957600080fd5b505af1158015611efd573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb486602001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611f5a9190613378565b600060405180830381600087803b158015611f7457600080fd5b505af1158015611f88573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb486604001516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611fe591906132ce565b600060405180830381600087803b158015611fff57600080fd5b505af1158015612013573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663def426988660a001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161207091906131a1565b600060405180830381600087803b15801561208a57600080fd5b505af115801561209e573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb486606001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016120fb9190613244565b600060405180830381600087803b15801561211557600080fd5b505af1158015612129573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb486608001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016121869190613323565b600060405180830381600087803b1580156121a057600080fd5b505af11580156121b4573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16634c6f30c08660600151846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161221392919061312f565b602060405180830381600087803b15801561222d57600080fd5b505af1158015612241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122659190810190612a1b565b90507fdfc533ec2b52797a1229dc2495dbd3f4948f7c4c982ec077ad9d80810ec5c1f981604051612296919061305b565b60405180910390a1809350505050919050565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561233f5780601f106123145761010080835404028352916020019161233f565b820191906000526020600020905b81548152906001019060200180831161232257829003601f168201915b505050505081565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b6560016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016123c4919061315f565b602060405180830381600087803b1580156123de57600080fd5b505af11580156123f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061241691908101906129f2565b92508273ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561247c57600080fd5b505af1158015612490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124b49190810190612977565b91508173ffffffffffffffffffffffffffffffffffffffff1663ae763db5876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161250b9190613279565b600060405180830381600087803b15801561252557600080fd5b505af1158015612539573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663ae763db5866040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161259291906133ad565b600060405180830381600087803b1580156125ac57600080fd5b505af11580156125c0573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff166309ff42f087846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161261b9291906130c1565b602060405180830381600087803b15801561263557600080fd5b505af1158015612649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061266d9190810190612a1b565b905080935050505092915050565b60c0604051908101604052806060815260200160608152602001606081526020016060815260200160608152602001600081525090565b60c0604051908101604052806060815260200160608152602001606081526020016060815260200160608152602001600081525090565b60006126f58251613500565b905092915050565b60006127098251613512565b905092915050565b600061271d8251613524565b905092915050565b60006127318251613536565b905092915050565b60006127458235613548565b905092915050565b60006127598251613548565b905092915050565b600082601f830112151561277457600080fd5b813561278761278282613431565b613404565b915080825260208301602083018583830111156127a357600080fd5b6127ae838284613576565b50505092915050565b600082601f83011215156127ca57600080fd5b81356127dd6127d88261345d565b613404565b915080825260208301602083018583830111156127f957600080fd5b612804838284613576565b50505092915050565b600082601f830112151561282057600080fd5b815161283361282e8261345d565b613404565b9150808252602083016020830185838301111561284f57600080fd5b61285a838284613585565b50505092915050565b600060c0828403121561287557600080fd5b61287f60c0613404565b9050600082013567ffffffffffffffff81111561289b57600080fd5b6128a784828501612761565b600083015250602082013567ffffffffffffffff8111156128c757600080fd5b6128d384828501612761565b602083015250604082013567ffffffffffffffff8111156128f357600080fd5b6128ff84828501612761565b604083015250606082013567ffffffffffffffff81111561291f57600080fd5b61292b84828501612761565b606083015250608082013567ffffffffffffffff81111561294b57600080fd5b61295784828501612761565b60808301525060a061296b84828501612739565b60a08301525092915050565b60006020828403121561298957600080fd5b6000612997848285016126e9565b91505092915050565b6000602082840312156129b257600080fd5b60006129c0848285016126fd565b91505092915050565b6000602082840312156129db57600080fd5b60006129e984828501612711565b91505092915050565b600060208284031215612a0457600080fd5b6000612a1284828501612725565b91505092915050565b600060208284031215612a2d57600080fd5b6000612a3b8482850161274d565b91505092915050565b600060208284031215612a5657600080fd5b600082015167ffffffffffffffff811115612a7057600080fd5b612a7c8482850161280d565b91505092915050565b600080600060608486031215612a9a57600080fd5b600084013567ffffffffffffffff811115612ab457600080fd5b612ac0868287016127b7565b9350506020612ad186828701612739565b9250506040612ae286828701612739565b9150509250925092565b60008060408385031215612aff57600080fd5b600083013567ffffffffffffffff811115612b1957600080fd5b612b25858286016127b7565b925050602083013567ffffffffffffffff811115612b4257600080fd5b612b4e858286016127b7565b9150509250929050565b600080600060608486031215612b6d57600080fd5b600084013567ffffffffffffffff811115612b8757600080fd5b612b93868287016127b7565b935050602084013567ffffffffffffffff811115612bb057600080fd5b612bbc868287016127b7565b9250506040612bcd86828701612739565b91505092509250","92565b600060208284031215612be957600080fd5b600082013567ffffffffffffffff811115612c0357600080fd5b612c0f84828501612863565b91505092915050565b6000612c23826134a8565b80845260208401935083602082028501612c3c85613489565b60005b84811015612c75578383038852612c57838351612f94565b9250612c62826134c9565b9150602088019750600181019050612c3f565b508196508694505050505092915050565b612c8f81613552565b82525050565b612c9e81613564565b82525050565b612cad816134f6565b82525050565b6000612cbe826134be565b808452612cd2816020860160208601613585565b612cdb816135b8565b602085010191505092915050565b6000612cf4826134b3565b808452612d08816020860160208601613585565b612d11816135b8565b602085010191505092915050565b600081546001811660008114612d3c5760018114612d5c57612d9d565b607f600283041680865260ff198316602087015260408601935050612d9d565b60028204808652602086019550612d7285613496565b60005b82811015612d9457815481890152600182019150602081019050612d75565b80880195505050505b505092915050565b6000601282527f5368617265686f6c6465725f6e756d62657200000000000000000000000000006020830152604082019050919050565b6000601a82527f556e69666965645f736f6369616c5f6372656469745f636f64650000000000006020830152604082019050919050565b6000601382527f5368617265686f6c6465725f6163636f756e74000000000000000000000000006020830152604082019050919050565b6000600b82527f5368617265686f6c6465720000000000000000000000000000000000000000006020830152604082019050919050565b6000600d82527f6f66666572696e675f74797065000000000000000000000000000000000000006020830152604082019050919050565b6000600c82527f636f6d70616e795f4e616d6500000000000000000000000000000000000000006020830152604082019050919050565b600060c0830160008301518482036000860152612f0c8282612ce9565b91505060208301518482036020860152612f268282612ce9565b91505060408301518482036040860152612f408282612ce9565b91505060608301518482036060860152612f5a8282612ce9565b91505060808301518482036080860152612f748282612ce9565b91505060a0830151612f8960a0860182612ca4565b508091505092915050565b600060c0830160008301518482036000860152612fb18282612ce9565b91505060208301518482036020860152612fcb8282612ce9565b91505060408301518482036040860152612fe58282612ce9565b91505060608301518482036060860152612fff8282612ce9565b915050608083015184820360808601526130198282612ce9565b91505060a083015161302e60a0860182612ca4565b508091505092915050565b600060208201905081810360008301526130538184612c18565b905092915050565b60006020820190506130706000830184612ca4565b92915050565b600060408201905061308b6000830185612ca4565b6130986020830184612ca4565b9392505050565b600060208201905081810360008301526130b98184612ce9565b905092915050565b600060408201905081810360008301526130db8185612cb3565b90506130ea6020830184612c86565b9392505050565b6000606082019050818103600083015261310b8186612cb3565b905061311a6020830185612c95565b6131276040830184612c86565b949350505050565b600060408201905081810360008301526131498185612ce9565b90506131586020830184612c95565b9392505050565b600060208201905081810360008301526131798184612d1f565b905092915050565b6000602082019050818103600083015261319a81612da5565b9050919050565b600060408201905081810360008301526131ba81612da5565b90506131c96020830184612ca4565b92915050565b600060208201905081810360008301526131e881612ddc565b9050919050565b6000604082019050818103600083015261320881612ddc565b9050818103602083015261321c8184612ce9565b905092915050565b6000602082019050818103600083015261323d81612e13565b9050919050565b6000604082019050818103600083015261325d81612e13565b905081810360208301526132718184612ce9565b905092915050565b6000604082019050818103600083015261329281612e13565b905081810360208301526132a68184612cb3565b905092915050565b600060208201905081810360008301526132c781612e4a565b9050919050565b600060408201905081810360008301526132e781612e4a565b905081810360208301526132fb8184612ce9565b905092915050565b6000602082019050818103600083015261331c81612e81565b9050919050565b6000604082019050818103600083015261333c81612e81565b905081810360208301526133508184612ce9565b905092915050565b6000602082019050818103600083015261337181612eb8565b9050919050565b6000604082019050818103600083015261339181612eb8565b905081810360208301526133a58184612ce9565b905092915050565b600060408201905081810360008301526133c681612eb8565b905081810360208301526133da8184612cb3565b905092915050565b600060208201905081810360008301526133fc8184612eef565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561342757600080fd5b8060405250919050565b600067ffffffffffffffff82111561344857600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561347457600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b60008160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061350b826134d6565b9050919050565b600061351d826134d6565b9050919050565b600061352f826134d6565b9050919050565b6000613541826134d6565b9050919050565b6000819050919050565b600061355d826134d6565b9050919050565b600061356f826134d6565b9050919050565b82818337600083830152505050565b60005b838110156135a3578082015181840152602081019050613588565b838111156135b2576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820b20ab60cbfe7ebb4bddca9c8bb282cc0aca721d31232b5d910b3018ea7ddd8116c6578706572696d656e74616cf50037"};

    public static final String SM_BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {"[{\"constant\":false,\"inputs\":[{\"components\":[{\"name\":\"Unified_social_credit_code\",\"type\":\"string\"},{\"name\":\"company_Name\",\"type\":\"string\"},{\"name\":\"Shareholder\",\"type\":\"string\"},{\"name\":\"Shareholder_account\",\"type\":\"string\"},{\"name\":\"offering_type\",\"type\":\"string\"},{\"name\":\"Shareholder_number\",\"type\":\"int256\"}],\"name\":\"equity\",\"type\":\"tuple\"}],\"name\":\"insert\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"Shareholder_account\",\"type\":\"string\"},{\"name\":\"company_Name\",\"type\":\"string\"}],\"name\":\"Detailed_select\",\"outputs\":[{\"components\":[{\"name\":\"Unified_social_credit_code\",\"type\":\"string\"},{\"name\":\"company_Name\",\"type\":\"string\"},{\"name\":\"Shareholder\",\"type\":\"string\"},{\"name\":\"Shareholder_account\",\"type\":\"string\"},{\"name\":\"offering_type\",\"type\":\"string\"},{\"name\":\"Shareholder_number\",\"type\":\"int256\"}],\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"Shareholder_account\",\"type\":\"string\"},{\"name\":\"company_Name\",\"type\":\"string\"},{\"name\":\"numer\",\"type\":\"int256\"}],\"name\":\"Reduce\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"},{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"Shareholder_account\",\"type\":\"string\"},{\"name\":\"company_Name\",\"type\":\"string\"},{\"name\":\"numer\",\"type\":\"int256\"}],\"name\":\"ADD\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"},{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"Shareholder_account\",\"type\":\"string\"},{\"name\":\"start\",\"type\":\"int256\"},{\"name\":\"end\",\"type\":\"int256\"}],\"name\":\"Fuzzy_select\",\"outputs\":[{\"components\":[{\"name\":\"Unified_social_credit_code\",\"type\":\"string\"},{\"name\":\"company_Name\",\"type\":\"string\"},{\"name\":\"Shareholder\",\"type\":\"string\"},{\"name\":\"Shareholder_account\",\"type\":\"string\"},{\"name\":\"offering_type\",\"type\":\"string\"},{\"name\":\"Shareholder_number\",\"type\":\"int256\"}],\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"company_info\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"CreateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"InsertResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"UpdateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"RemoveResult\",\"type\":\"event\"}]"};

    public static final String ABI = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", ABI_ARRAY);

    public static final String FUNC_INSERT = "insert";

    public static final String FUNC_DETAILED_SELECT = "Detailed_select";

    public static final String FUNC_REDUCE = "Reduce";

    public static final String FUNC_ADD = "ADD";

    public static final String FUNC_FUZZY_SELECT = "Fuzzy_select";

    public static final String FUNC_COMPANY_INFO = "company_info";

    public static final Event CREATERESULT_EVENT = new Event("CreateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event INSERTRESULT_EVENT = new Event("InsertResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event UPDATERESULT_EVENT = new Event("UpdateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event REMOVERESULT_EVENT = new Event("RemoveResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    protected EquityStructureTable(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public TransactionReceipt insert(Struct0 equity) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(equity), 
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] insert(Struct0 equity, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(equity), 
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForInsert(Struct0 equity) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(equity), 
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<Struct0> getInsertInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Struct0>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Struct0>(

                (Struct0) results.get(0)
                );
    }

    public Tuple1<BigInteger> getInsertOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Struct0 Detailed_select(String Shareholder_account, String company_Name) throws ContractException {
        final Function function = new Function(FUNC_DETAILED_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Shareholder_account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(company_Name)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Struct0>() {}));
        return executeCallWithSingleValueReturn(function, Struct0.class);
    }

    public TransactionReceipt Reduce(String Shareholder_account, String company_Name, BigInteger numer) {
        final Function function = new Function(
                FUNC_REDUCE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Shareholder_account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(company_Name), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(numer)), 
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] Reduce(String Shareholder_account, String company_Name, BigInteger numer, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_REDUCE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Shareholder_account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(company_Name), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(numer)), 
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForReduce(String Shareholder_account, String company_Name, BigInteger numer) {
        final Function function = new Function(
                FUNC_REDUCE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Shareholder_account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(company_Name), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(numer)), 
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<String, String, BigInteger> getReduceInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REDUCE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<String, String, BigInteger>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (BigInteger) results.get(2).getValue()
                );
    }

    public Tuple2<BigInteger, BigInteger> getReduceOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REDUCE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, BigInteger>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public TransactionReceipt ADD(String Shareholder_account, String company_Name, BigInteger numer) {
        final Function function = new Function(
                FUNC_ADD, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Shareholder_account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(company_Name), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(numer)), 
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] ADD(String Shareholder_account, String company_Name, BigInteger numer, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_ADD, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Shareholder_account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(company_Name), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(numer)), 
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForADD(String Shareholder_account, String company_Name, BigInteger numer) {
        final Function function = new Function(
                FUNC_ADD, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Shareholder_account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(company_Name), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(numer)), 
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<String, String, BigInteger> getADDInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_ADD, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<String, String, BigInteger>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (BigInteger) results.get(2).getValue()
                );
    }

    public Tuple2<BigInteger, BigInteger> getADDOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_ADD, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}, new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, BigInteger>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public DynamicArray<Struct0> Fuzzy_select(String Shareholder_account, BigInteger start, BigInteger end) throws ContractException {
        final Function function = new Function(FUNC_FUZZY_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Shareholder_account), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(start), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(end)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Struct0>>() {}));
        return executeCallWithSingleValueReturn(function, DynamicArray.class);
    }

    public String company_info() throws ContractException {
        final Function function = new Function(FUNC_COMPANY_INFO, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public List<CreateResultEventResponse> getCreateResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(CREATERESULT_EVENT, transactionReceipt);
        ArrayList<CreateResultEventResponse> responses = new ArrayList<CreateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CreateResultEventResponse typedResponse = new CreateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeCreateResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeCreateResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public List<InsertResultEventResponse> getInsertResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(INSERTRESULT_EVENT, transactionReceipt);
        ArrayList<InsertResultEventResponse> responses = new ArrayList<InsertResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            InsertResultEventResponse typedResponse = new InsertResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeInsertResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeInsertResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public List<UpdateResultEventResponse> getUpdateResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(UPDATERESULT_EVENT, transactionReceipt);
        ArrayList<UpdateResultEventResponse> responses = new ArrayList<UpdateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            UpdateResultEventResponse typedResponse = new UpdateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeUpdateResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeUpdateResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public List<RemoveResultEventResponse> getRemoveResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(REMOVERESULT_EVENT, transactionReceipt);
        ArrayList<RemoveResultEventResponse> responses = new ArrayList<RemoveResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            RemoveResultEventResponse typedResponse = new RemoveResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeRemoveResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeRemoveResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public static EquityStructureTable load(String contractAddress, Client client, CryptoKeyPair credential) {
        return new EquityStructureTable(contractAddress, client, credential);
    }

    public static EquityStructureTable deploy(Client client, CryptoKeyPair credential) throws ContractException {
        return deploy(EquityStructureTable.class, client, credential, getBinary(client.getCryptoSuite()), "");
    }

    public static class Struct0 extends DynamicStruct {
        public String Unified_social_credit_code;

        public String company_Name;

        public String Shareholder;

        public String Shareholder_account;

        public String offering_type;

        public BigInteger Shareholder_number;

        public Struct0(Utf8String Unified_social_credit_code, Utf8String company_Name, Utf8String Shareholder, Utf8String Shareholder_account, Utf8String offering_type, Int256 Shareholder_number) {
            super(Unified_social_credit_code,company_Name,Shareholder,Shareholder_account,offering_type,Shareholder_number);
            this.Unified_social_credit_code = Unified_social_credit_code.getValue();
            this.company_Name = company_Name.getValue();
            this.Shareholder = Shareholder.getValue();
            this.Shareholder_account = Shareholder_account.getValue();
            this.offering_type = offering_type.getValue();
            this.Shareholder_number = Shareholder_number.getValue();
        }

        public Struct0(String Unified_social_credit_code, String company_Name, String Shareholder, String Shareholder_account, String offering_type, BigInteger Shareholder_number) {
            super(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Unified_social_credit_code),new org.fisco.bcos.sdk.abi.datatypes.Utf8String(company_Name),new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Shareholder),new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Shareholder_account),new org.fisco.bcos.sdk.abi.datatypes.Utf8String(offering_type),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(Shareholder_number));
            this.Unified_social_credit_code = Unified_social_credit_code;
            this.company_Name = company_Name;
            this.Shareholder = Shareholder;
            this.Shareholder_account = Shareholder_account;
            this.offering_type = offering_type;
            this.Shareholder_number = Shareholder_number;
        }
    }

    public static class CreateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class InsertResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class UpdateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class RemoveResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }
}
